﻿#pragma once
#include <string>
#include <toml.hpp>
#include "AppConfig.h"




//构造函数

class UtilToml
{
	//构造函数
public:
	//filePath
	UtilToml();
	//析构函数
	~UtilToml();
	void readTomlFile(toml::value& data);
	void writeTomlFile(toml::value& data);
	void createTomlFile();
	void exportToml(std::string fileName);
	void importToml(std::string fileName);
	void initToml();
	template<typename T>
	static T getGlobalToml(std::string k) {
		toml::value data;
		UtilToml* utilToml = new UtilToml();
		utilToml->readTomlFile(data);
		// 读取 TOML 数据
		try {
			T v = toml::find<T>(data, k);
			//判断是否有该属性
			return v;
		}
		catch (const std::exception& err) {
			std::cerr << "Error while parsing TOML file: " << err.what() << std::endl;
			//说明没有该属性
			//添加该属性
			updateGlobalToml(k, T());
			return T();
		}
	}
	template<typename T>
	static void updateGlobalToml(std::string k, T v) {
		try {
			// 读取 TOML 文件
			toml::value data;
			UtilToml* utilToml = new UtilToml();
			utilToml->readTomlFile(data);

			// 更新 TOML 数据
			toml::value& targetValue = data.at(k);
			targetValue = v;

			// 将更新后的数据写入文件
			utilToml->writeTomlFile(data);
		}
		catch (const std::exception& e) {
			std::cerr << "Error: " << e.what() << std::endl;
		}
	}
};



